<?php

/**
 * 用户业务入驻 - 示例
 *
 * @author sdk-generator
 * @Description
 */
namespace BsPayDemo;

// 1. 资源及配置加载
require_once dirname(__FILE__) . "/loader.php";
require_once  dirname(__FILE__). "/../BsPaySdk/request/V2UserBusiOpenRequest.php";

use BsPaySdk\core\BsPayClient;
use BsPaySdk\request\V2UserBusiOpenRequest;

// 2.组装请求参数
$request = new V2UserBusiOpenRequest();
// 汇付ID
$request->setHuifuId("6666000105765113");
// 请求流水号
$request->setReqSeqId(date("YmdHis").mt_rand());
// 请求日期
$request->setReqDate(date("Ymd"));
// 渠道商/商户汇付Id
$request->setUpperHuifuId("6666000003084836");
// 乐接活配置当合作平台为乐接活，必填
// $request->setLjhData(getLjhData());

// 设置非必填字段
$extendInfoMap = getExtendInfos();
$request->setExtendInfo($extendInfoMap);

// 3. 发起API调用
$client = new BsPayClient();
$result = $client->postRequest($request);
if (!$result || $result->isError()) {  //失败处理
    var_dump($result -> getErrorInfo());
} else {    //成功处理
    var_dump($result);
}

/**
 * 非必填字段
 *
 */
function getExtendInfos() {
    // 设置非必填字段
    $extendInfoMap = array();
    // 结算信息配置
    $extendInfoMap["settle_config"]= getSettleConfig();
    // 结算卡信息
    $extendInfoMap["card_info"]= getCardInfo();
    // 取现配置列表
    $extendInfoMap["cash_config"]= getCashConfig();
    // 文件列表
    $extendInfoMap["file_list"]= getFileList();
    // 延迟入账开关
    // $extendInfoMap["delay_flag"]= "";
    // 斗拱e账户功能配置
    // $extendInfoMap["elec_acct_config"]= getElecAcctConfig();
    // 灵活用工开关
    // $extendInfoMap["open_tax_flag"]= "";
    // 异步请求地址
    $extendInfoMap["async_return_url"]= "";
    // 合作平台
    // $extendInfoMap["lg_platform_type"]= "";
    return $extendInfoMap;
}

function getSettleConfig() {
    $dto = array();
    // 结算周期
    $dto["settle_cycle"] = "D1";
    // 结算手续费外扣时的汇付ID外扣手续费承担方的汇付ID。外扣时必填；&lt;font color&#x3D;&quot;green&quot;&gt;示例值：6666000123123123&lt;/font&gt;
    $dto["out_settle_huifuid"] = "";
    // 结算手续费外扣时的账户类型外扣手续费账户类型； 01：基本户（为空时默认值）， 05：充值户；外扣时必填；&lt;br/&gt;&lt;font color&#x3D;&quot;green&quot;&gt;示例值：01&lt;/font&gt;
    $dto["out_settle_acct_type"] = "";
    // 结算批次号settle_pattern为P0时必填；[参见结算批次说明](https://paas.huifu.com/open/doc/api/#/csfl/api_csfl_jspc)
    $dto["settle_batch_no"] = "300";
    // 是否优先到账settle_pattern为P0时选填， Y：是 N：否（为空默认取值）；&lt;font color&#x3D;&quot;green&quot;&gt;示例值：Y&lt;/font&gt;
    $dto["is_priority_receipt"] = "";
    // 自定义结算处理时间settle_pattern为P1/P2时必填，注意：00:00到00:30不能指定；格式：HHmmss；&lt;font color&#x3D;&quot;green&quot;&gt;示例值：103000&lt;/font&gt;
    $dto["settle_time"] = "";
    // 节假日结算手续费率settle_cycle为D1时必填。单位%，需保留小数点后两位。取值范围[0.00，100.00]，不收费请填写0.00；settle_cycle&#x3D;T1时，不生效 ；settle_cycle为D1时，遇节假日按此费率结算 ；&lt;font color&#x3D;&quot;green&quot;&gt;示例值：0.05&lt;/font&gt;
    $dto["fixed_ratio"] = "2";
    // 起结金额
    $dto["min_amt"] = "0.01";
    // 留存金额
    $dto["remained_amt"] = "10.00";
    // 结算摘要
    $dto["settle_abstract"] = "结算摘要";
    // 手续费外扣标记
    $dto["out_settle_flag"] = "2";
    // 结算方式
    $dto["settle_pattern"] = "";
    // 工作日结算手续费率
    // $dto["workday_fixed_ratio"] = "";
    // 工作日结算手续费固定金额
    // $dto["workday_constant_amt"] = "";

    return json_encode($dto,JSON_UNESCAPED_UNICODE|JSON_UNESCAPED_SLASHES);
}

function getCardInfo() {
    $dto = array();
    // 卡类型
    $dto["card_type"] = "0";
    // 卡户名
    $dto["card_name"] = "交通银行股份有限公司";
    // 卡号
    $dto["card_no"] = "6217001210064762121";
    // 银行所在省
    $dto["prov_id"] = "310000";
    // 银行所在市
    $dto["area_id"] = "310100";
    // 银行号当card_type&#x3D;0时必填，对私可以为空[点击查看](https://paas.huifu.com/open/doc/api/#/csfl/api_csfl_yhbm)；&lt;font color&#x3D;&quot;green&quot;&gt;示例值：01040000&lt;/font&gt;
    $dto["bank_code"] = "01050000";
    // 支行联行号当card_type&#x3D;0时必填，[点击查看](https://paas.huifu.com/open/doc/api/#/csfl/api_csfl_yhzhbm)；&lt;font color&#x3D;&quot;green&quot;&gt;示例值：103124075619&lt;/font&gt;
    $dto["branch_code"] = "105305264815";
    // 持卡人证件类型对私必填；参见《[自然人证件类型](https://paas.huifu.com/open/doc/api/#/api_ggcsbm?id&#x3D;%e8%87%aa%e7%84%b6%e4%ba%ba%e8%af%81%e4%bb%b6%e7%b1%bb%e5%9e%8b)》说明；&lt;font color&#x3D;&quot;green&quot;&gt;示例值：00&lt;/font&gt;
    $dto["cert_type"] = "00";
    // 持卡人证件号码对私必填； 如:证件类型为身份证, 则填写身份证号码；&lt;font color&#x3D;&quot;green&quot;&gt;示例值：320926198412032059&lt;/font&gt;
    $dto["cert_no"] = "110101197003077513";
    // 持卡人证件有效期类型对私必填；1：长期有效；0：非长期有效；&lt;font color&#x3D;&quot;green&quot;&gt;示例值：0&lt;/font&gt;
    $dto["cert_validity_type"] = "0";
    // 持卡人证件有效期（起始）对私必填；日期格式：yyyyMMdd，&lt;font color&#x3D;&quot;green&quot;&gt;示例值：20110112&lt;/font&gt;
    $dto["cert_begin_date"] = "20210806";
    // 持卡人证件有效期（截止）当cert_validity_type&#x3D;0时必须填写；日期格式yyyyMMdd，&lt;font color&#x3D;&quot;green&quot;&gt;示例值：20110112&lt;/font&gt;&lt;br/&gt;当cert_validity_type&#x3D;1可不填
    $dto["cert_end_date"] = "20410806";
    // 银行卡绑定手机号
    $dto["mp"] = "15556622368";
    // 默认结算卡标志
    // $dto["is_settle_default"] = "";

    return json_encode($dto,JSON_UNESCAPED_UNICODE|JSON_UNESCAPED_SLASHES);
}

function getCashConfig() {
    $dto = array();
    // 提现手续费（固定/元）fix_amt与fee_rate至少填写一项， 需保留小数点后两位，不收费请填写0.00；&lt;font color&#x3D;&quot;green&quot;&gt;示例值：1.00&lt;/font&gt;注：当cash_type&#x3D;D1时为节假日取现手续费
    $dto["fix_amt"] = "0.03";
    // 提现手续费率（%）fix_amt与fee_rate至少填写一项，需保留小数点后两位，取值范围[0.00,100.00]，不收费请填写0.00；&lt;font color&#x3D;&quot;green&quot;&gt;示例值：0.05&lt;/font&gt;注：1、如果fix_amt与fee_rate都填写了则手续费&#x3D;fix_amt+支付金额\*fee_rate2、当cash_type&#x3D;D1时为节假日取现手续费
    $dto["fee_rate"] = "2";
    // D1工作日取现手续费固定金额单位元，需保留小数点后两位。不收费请填写0.00；&lt;font color&#x3D;&quot;green&quot;&gt;示例值：1.00&lt;/font&gt;D1取现配置时选填，其他取现配置无效；cash_type取现类型为D1时，遇工作日按此费率结算，若未配置则默认按照节假日手续费计算
    // $dto["weekday_fix_amt"] = "test";
    // D1工作日取现手续费率单位%，需保留小数点后两位。取值范围[0.00，100.00]，不收费请填写0.00；&lt;font color&#x3D;&quot;green&quot;&gt;示例值：0.05&lt;/font&gt;D1取现配置时选填，其他取现配置无效；cash_type取现类型为D1时，遇工作日按此费率结算 ，若未配置则默认按照节假日手续费计算
    // $dto["weekday_fee_rate"] = "test";
    // 业务类型
    $dto["cash_type"] = "D1";
    // 是否交易手续费外扣
    $dto["out_fee_flag"] = "";
    // 手续费承担方
    $dto["out_fee_huifu_id"] = "";
    // 交易手续费外扣的账户类型
    $dto["out_fee_acct_type"] = "";
    // 是否优先到账
    // $dto["is_priority_receipt"] = "";

    $dtoList = array();
    array_push($dtoList, $dto);
    return json_encode($dtoList,JSON_UNESCAPED_UNICODE|JSON_UNESCAPED_SLASHES);
}

function getFileList() {
    $dto = array();
    // 文件类型
    $dto["file_type"] = "F02";
    // 文件jfileID
    $dto["file_id"] = "71da066c-5d15-3658-a86d-4e85ee67808a";
    // 文件名称
    $dto["file_name"] = "企业营业执照1.jpg";

    $dtoList = array();
    array_push($dtoList, $dto);
    return json_encode($dtoList,JSON_UNESCAPED_UNICODE|JSON_UNESCAPED_SLASHES);
}

function getElecCardList() {
    $dto = array();
    // 银行编码
    // $dto["bank_code"] = "test";
    // 支行联行号
    // $dto["branch_code"] = "test";
    // 支行名称
    // $dto["branch_name"] = "test";
    // 结算账户名
    // $dto["card_name"] = "test";
    // 银行卡号
    // $dto["card_no"] = "test";
    // 卡类型
    // $dto["card_type"] = "test";
    // 银行所在省
    // $dto["prov_id"] = "";
    // 银行所在市
    // $dto["area_id"] = "";
    // 银行绑定手机号
    // $dto["mp"] = "";
    // 默认卡标识
    // $dto["default_cash_flag"] = "";
    // 用户授权协议版本号
    // $dto["auth_version"] = "";
    // 用户授权协议号
    // $dto["auth_no"] = "";

    $dtoList = array();
    array_push($dtoList, $dto);
    return json_encode($dtoList,JSON_UNESCAPED_UNICODE|JSON_UNESCAPED_SLASHES);
}

function getElecAcctConfig() {
    $dto = array();
    // 电子账户开关
    // $dto["switch_state"] = "test";
    // 账户类型
    // $dto["acct_type"] = "test";
    // 电子账户提现手续费承担方
    // $dto["cash_fee_party"] = "test";
    // 场景
    // $dto["scene"] = "test";
    // 角色类型(角色编号)
    // $dto["role_type"] = "test";
    // 银行卡信息
    // $dto["elec_card_list"] = getElecCardList();
    // 用户类型
    // $dto["user_type"] = "";

    return json_encode($dto,JSON_UNESCAPED_UNICODE|JSON_UNESCAPED_SLASHES);
}

function getLjhData() {
    $dto = array();
    // 税源地id当合作平台为乐接活，必填
    // $dto["tax_area_id"] = "test";

    return json_encode($dto,JSON_UNESCAPED_UNICODE|JSON_UNESCAPED_SLASHES);
}


